home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / MRAC / Symbols / s-subtract < prev    next >
Lisp/Scheme  |  1998-09-21  |  2KB  |  60 lines

  1. s-subtract seed type start count pattern
  2.  
  3. This function enables the composer to generate a subtraction from a symbol pattern.
  4.  
  5. types:
  6. c     = cluster
  7. s    = step (melody)
  8. d    = divide
  9. r = random
  10.  
  11. (s-subtract nil 's 0 2 '(a b c d e f g))
  12. => (c d e f g)
  13.  
  14. In the example above a symbol melody has the <start> point 0 and the <count> 2 to be subtracted from this point. In the example below the type parameter 'c 'clusters the symbols in the pattern and subtracts two symbols from <count> point 2.
  15.  
  16. (s-subtract nil 'c 2 2 '(a b c d e f g))
  17. => (abefg)
  18.  
  19. (s-subtract nil 'd 2 2 '(a b c d e f g))
  20. => (ab efg)
  21.  
  22. (s-subtract .32 's '(2 3 4) '(1 2) '(a b c d e f g))
  23. => ((a b d e f g) (a b c d g) (a b c e f g))
  24.  
  25. (s-subtract .32 'r '(2 3 4) '(1 2) '(a b c d e f g))
  26. => ((ab defg) (a b c d g) (a b c e f g))
  27.  
  28. (setq cluster1 (g-cluster .34 's -6 6 7 9))
  29. => (e f g h i -d -c -b a)
  30.  
  31. (s-subtract .25 '(c s d) '(2 4) 4 cluster1)
  32. => ((efgha) (e f -c -b a) (ef -c-ba))
  33.  
  34. (setq cluster2 (g-cluster .23 's 0 0 '(4 5 7 9) '(6 7 7 8)))
  35.  
  36. (s-subtract .34 'r '(3 4) '(2 3) cluster2)
  37. => ((e f g h) (fghl) (hijk b) (jkla e))
  38.  
  39. (s-subtract .23 'r '((3 4) (2 3)) '(2 3) cluster2)
  40. => ((efgj) (fgkl) (hij ab) (jkl de))
  41.  
  42. Notice in this example how a whole sequence of lists can be processed in different ways and with different parameter settings.
  43.  
  44. (s-subtract .23 '(d s d d s s) '((3 4 5)) '(2 3 4)
  45.             (gen-repeat 12 (list '(a b c d e f g h i j k l))))
  46.  
  47. => ((abcd ghijkl) (a b c g h i j k l)
  48.     (abc hijkl) (abcde hijkl)
  49.     (a b c g h i j k l) (a b c h i j k l)
  50.     (abcde hijkl) (a b c g h i j k l)
  51.     (abcde jkl) (abcde hijkl)
  52.     (a b c d h i j k l) (a b c h i j k l))
  53.  
  54. (s-subtract nil 'r '((2 3 4)) '(2 3 4)
  55.               (gen-repeat 12 (list '(a b c d e f))))
  56.  
  57. => ((abc f) (ab f) (a b c) (a b c f) (abf) (abcd)
  58.     (abcf) (ab f) (a b c d) (abc f) (a b c) (ab))
  59. or ...
  60.